<?php

class Registrado extends Ftl_Registrado{
    
    

    public function  __construct($id=null,$guid=false)
    {
        parent::__construct($id,$guid);
    }

    public function guardar($guidInvitacion=null)
    {
        
        $respuesta = new Ftl_Response();
        $respuesta->state = 0;
        try {

            $datos = array (
                "p_id"                    => $this->getId(),
                "p_nombre"                => $this->getNombre(),
                "p_apellido"              => $this->getApellido(),
                "p_nro_doc"               => $this->getNroDoc(),
                "p_email"                 => $this->getEmail(),
                "p_sexo"                  => $this->getSexo(),
                "p_fecha_nac"             => $this->getFechaNac(),
                "p_dom_calle"             => $this->getCalle(),
                "p_dom_nro"               => $this->getNroCalle(),
                "p_dom_piso"              => $this->getPiso(),
                "p_dom_depto"             => $this->getDepto(),
                "p_dom_id_provincia"      => $this->getIdProvincia(),
                "p_dom_localidad"         => $this->getLocalidad(),
                "p_dom_cp"                => $this->getCp(),
                "p_dom_cod_area_telefono" => $this->getCodAreaTelefono(),
                "p_dom_nro_telefono"      => $this->getNroTelefono(),
                "p_guid_invitacion"       => $guidInvitacion,
                "p_fecha_alta"            => Ftl_DateTimeUtil::gmtToLocal(-3,'Y-m-d H:i:s')

            );
            

            $res = self::getDB()->executeSP("registrados_guardar",$datos);

            if($res)
            {
                if ($res[0]->resultado > 0)
                {
                    $this->setId($res[0]->resultado);
                    $this->setGuid($res[0]->guid);
                    $respuesta->state = 1;
                }else
                {
                    $respuesta->state = $res[0]->resultado;
                    $respuesta->message = "El dni o email ya está siendo utilizado por otro usuario.";
                    return $respuesta;
                }
            }


        }
        catch(Ftl_DB_DataBaseException $e)
        {
            echo "entra en Ftl_DB_DataBaseException";
            throw new Ftl_DB_DataBaseException($e->getMessage(),$e->getCode());
        }
        catch(Exception $e) {
            $respuesta->state = -1;
            $respuesta->message = $e->getMessage();
        }
        //self::getDB()->close();

        return $respuesta;

    }


    public function guardarCodigo($codigo)
    {
        $respuesta = new Ftl_Response();
        $respuesta->state = 0;

        try{

            $params = array(

                "p_id" => $this->getId(),
                "p_codigo" => $codigo,
                "p_fecha_alta" => Ftl_DateTimeUtil::gmtToLocal(-3,'Y-m-d H:i:s')

            );

            $res = self::getDB()->executeSP("codigos_guardar",$params,  Ftl_DB::FETCH_OBJECT);

            if($res)
            {
                if ($res[0]->resultado > 0)
                {
                    $respuesta->state = 1;
                    $respuesta->data = array('id_codigo' => $res[0]->resultado);
                }
                else
                {
                    $respuesta->state = $res[0]->resultado;
                    $respuesta->message = "Solo podes cargar el mismo código hasta 3 veces.";
                    return $respuesta;
                }
            }

        }
        catch(Ftl_DB_DataBaseException $e)
        {
            throw new Ftl_DB_DataBaseException($e->getMessage(),$e->getCode());
        }
        catch(Exception $e){
            $respuesta->state == -1;
            $respuesta->message = $e->getMessage();
        }

        return $respuesta;
    }

    public function invitarAmigo(&$invitacion)
    {
        $respuesta = new Ftl_Response();
        $respuesta->state = 0;

        try{

            $params = array(

                "p_id_registrado" => $this->getId(),
                "p_nombre_invitado" => $invitacion->getNombreInvitado(),
                "p_email_invitado" => $invitacion->getEmailInvitado(),
                "p_fecha_alta" => Ftl_DateTimeUtil::gmtToLocal(-3,'Y-m-d H:i:s')

            );

            $res = self::getDB()->executeSP("invitaciones_guardar",$params);

            if($res)
            {
                if ($res[0])
                {
                    $respuesta->state = 1;

                    $invitacion->setId($res[0]->id);
                    $invitacion->setGuid($res[0]->guid);
                }
            }

        }
        catch(Ftl_DB_DataBaseException $e)
        {
            throw new Ftl_DB_DataBaseException($e->getMessage(),$e->getCode());
        }
        catch(Exception $e){
            $respuesta->state == -1;
            $respuesta->message = $e->getMessage();
        }

        return $respuesta;
    }


    public function marcarComoGanador($pTipo)
    {
        $respuesta = new Ftl_Response();
        $respuesta->state = 0;

        try{

            $params = array(
                "p_id_registrado" => $this->getId(),
                "p_tipo"    => $pTipo,
                "p_fecha_alta" => Ftl_DateTimeUtil::gmtToLocal(-3,'Y-m-d H:i:s')
            );

            $res = self::getDB()->executeSP("ganadores_guardar",$params);
            $respuesta->state = 1;

        }
        catch(Ftl_DB_DataBaseException $e)
        {
            throw new Ftl_DB_DataBaseException($e->getMessage(),$e->getCode());
        }
        catch(Exception $e){
            $respuesta->state == -1;
            $respuesta->message = $e->getMessage();
        }

        return $respuesta;
    }



}
?>
